/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package PersistanceLayer;

import java.sql.Connection;
import java.util.ArrayList;

import BusinessLayer.Etudiant;
import jdbc.ConnectionMySql;
import jdbc.ConnectionToOracle;

/**
 *
 * @author Julien
 */
public abstract class DAO<T> {

            // Attribut de connexion à la base de donnees
	public Connection connect = ConnectionToOracle.getInstance();
              
	
	/**
         * Methode abstraite permettant de mapper un objet de type T
         * et de l'ajouter dans la table correspondante dans la base de donnees.
         */
        public abstract boolean create(T obj);
 /**
         * Methode abstraite permettant de mapper un objet de type T et de mettre
         * a jour l'enregistrement correspondant dans la base de donnees.
         */
	public abstract boolean update(T obj);

        /**
         * Methode abstraite permettant de mapper un objet de type T et de mettre
         * a jour l'enregistrement correspondant dans la base de donnees.
         */
	public abstract boolean update(T ancien, T nouveau);
	public abstract boolean update(String a, String b, String c, String d);
        /**
         * Methode abstraite permettant de mapper un objet de type T afin de rechercher
         * l'enregistrement lui correpondant dans la base de donnees.
         * Cette methode sera utile au niveau des gestionnaires de la couche metier,
         * afin de completer les informations de leur(s) liste(s).
         */
        public abstract T find(T obj);

	/**
         * Methode abstraite permettant de maper un objet de type T afin de supprimer
         * l'enregistrement correspondant dans la base de donnÃ©es.
         */
	public abstract boolean delete(T obj);

        /**
         * Methode abstraite permettant de retourner la liste des enregistrements
         * d'une table de la base de donnees sous forme d'objets de type T
         */
        public abstract ArrayList<T> getListe();
        
        public abstract String getNom(String name);
      
        /**
         * 
         * @param name chaine de caract�re contenant le nom de l'�l�ment contenant 
         * un ensemble dobjets T
         * @return une liste d'objets T
         */
        public abstract ArrayList<T> getListe(String name);
}


